home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Development / MosaicSRC / src / mui.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-03-13  |  61.3 KB  |  1,677 lines

  1. #include "includes.h"
  2. #include <string.h>
  3. #include "globals.h"
  4. #include "HTML.h" /* For mosaic.h */
  5. #include "mosaic.h"
  6. #include "htmlgad.h"
  7. #include "gui.h"
  8. #include "XtoI.h"
  9. #include "protos.h"
  10. #include "spinner.h"
  11. #include "BoingTransfer.h"
  12.  
  13. #include "image_back.h"
  14. #include "image_forward.h"
  15. #include "image_reload.h"
  16. #include "image_home.h"
  17. #include "image_open.h"
  18. #include "image_amiga.h"
  19. #include "image_amosaic.h"
  20.  
  21. #include "amosaic_cat.h"
  22.  
  23. extern AppData Rdata;
  24.  
  25. #define MUIA_Prop_Delta                 0x8042c5f4 /* is. LONG              */
  26. #define MUIA_Prop_DeltaFactor           0x80427c5e /* isg LONG              */
  27. #define MUIA_FillArea 0x804294A3 /* V4 BOOL (private) */
  28.  
  29. #define mui_version (MUIMasterBase->lib_Version)
  30.  
  31. extern char *amosaic_version;
  32. extern char *amosaic_window_title;
  33. extern struct Hook ScrollHook;
  34. extern struct Hook LayoutHook;
  35.  
  36. #define SimpleButtonHelp(name,helptext)\
  37.     TextObject,\
  38.         ButtonFrame,\
  39.         MUIA_Text_Contents, name,\
  40.         MUIA_Text_PreParse, "\33c",\
  41.         MUIA_InputMode    , MUIV_InputMode_RelVerify,\
  42.         MUIA_Background   , MUII_ButtonBack,\
  43.         MUIA_ShortHelp,helptext,\
  44.         End
  45.  
  46. extern int anchor_visited_predicate();
  47. extern void ImageResolve();
  48.  
  49. extern mo_window window;
  50.  
  51. extern char * amosaic_about_version;
  52.  
  53. Object *DBG_Str_Gad;
  54. Object *BT_Debug;
  55. Object *IButtonBack;
  56. Object *IButtonForward;
  57. Object *IButtonReload;
  58. Object *IButtonHome;
  59. Object *IButtonOpen;
  60. Object *IButtonAmiga;
  61. Object *IButtonAMosaic;
  62. Object *TButtonBack;
  63. Object *TButtonForward;
  64. Object *TButtonReload;
  65. Object *TButtonHome;
  66. Object *TButtonOpen;
  67. Object *TButtonAmiga;
  68. Object *TButtonAMosaic;
  69. Object *LB_Title;
  70. Object *TopGroup;
  71. Object *TTopGroup;
  72.  
  73. Object *SearchIndex;
  74. Object *ButtonGroup;
  75.  
  76. APTR MN_RexxMenu=NULL;
  77.  
  78. char *RexxMacroNames[10], ShortCuts[10][2];
  79.  
  80. ///general Hotlist stuff (made by rs)
  81. #include <time.h>
  82.  
  83. APTR BT_AddHotlist,PopURL,URLGroupList,URLList;
  84. APTR BT_HotlistGroupParent,TX_HotlistGroupTitle,BT_HotlistGroupNew,BT_HotlistGroupDelete,BT_HotlistGroupEdit,BT_HotlistGroupSort,BT_HotlistGroupUp,BT_HotlistGroupDown;
  85. APTR BT_HotlistNew,BT_HotlistDelete,BT_HotlistEdit,BT_HotlistSort,BT_HotlistMove,BT_HotlistUp,BT_HotlistDown;
  86.  
  87. struct HotlistEntry {
  88.   char Title[128];
  89.   char Location[500];
  90.   char Date[30];
  91. };
  92.  
  93. struct HotlistGroupEntry {
  94.   int Depth;
  95.   char Title[30],FullTitle[200];
  96.   APTR ChildList;
  97.   APTR LinkList;
  98.   struct HotlistGroupEntry *Parent;
  99. };   
  100.  
  101. void LoadHotlist(void);
  102. void SaveHotlist(void);
  103.  
  104. struct HotlistGroupEntry GroupRootList,*CurrentShownURLGroup;
  105.  
  106. __saveds __asm long URLStrObjFunc(register __a2 Object *pop,register __a1 Object *str)
  107. {
  108.   char *s;
  109.   struct HotlistEntry *x;
  110.   int i;
  111.   get(str,MUIA_String_Contents,&s);
  112.   for (i=0;;i++)
  113.   {
  114.     DoMethod(URLList,MUIM_List_GetEntry,i,&x);
  115.     if(!x)
  116.     {
  117.       set(URLList,MUIA_List_Active,MUIV_List_Active_Off);
  118.       break;
  119.     }
  120.     else if (!stricmp(x->Location,s))
  121.     {
  122.       set(URLList,MUIA_List_Active,i);
  123.       DoMethod(URLList,MUIM_List_Jump,i);
  124.       break;
  125.     }
  126.   }
  127.   return(TRUE);
  128. }
  129.  
  130. struct Hook URLStrObjHook={{NULL,NULL},(VOID *)URLStrObjFunc,NULL,NULL};
  131.  
  132. __saveds __asm void URLObjStrFunc(register __a2 Object *pop,register __a1 Object *str)
  133. {
  134.   struct HotlistEntry *x;
  135.   DoMethod(pop,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&x);
  136.   set(str,MUIA_String_Contents,x->Location);
  137.   set(str,MUIA_String_Acknowledge,TRUE);
  138. }
  139.  
  140. struct Hook URLObjStrHook={{NULL,NULL},(VOID *)URLObjStrFunc,NULL,NULL};
  141.  
  142. void ShowHotlist(struct HotlistGroupEntry *hge)
  143. {
  144.   long i,Count;
  145.   set(TX_HotlistGroupTitle,MUIA_Text_Contents,hge->FullTitle);
  146.   set(URLList,MUIA_List_Quiet,TRUE);
  147.   set(URLGroupList,MUIA_List_Quiet,TRUE);
  148.   DoMethod(URLList,MUIM_List_Clear);
  149.   DoMethod(URLGroupList,MUIM_List_Clear);
  150.   get(hge->ChildList,MUIA_List_Entries,&Count);
  151.   for(i=0;i<Count;i++)
  152.   {
  153.     struct HotlistGroupEntry *he;
  154.     DoMethod(hge->ChildList,MUIM_List_GetEntry,i,&he);
  155.     DoMethod(URLGroupList,MUIM_List_InsertSingle,he,MUIV_List_Insert_Bottom);
  156.   }
  157.   get(hge->LinkList,MUIA_List_Entries,&Count);
  158.   for(i=0;i<Count;i++)
  159.   {
  160.     struct HotlistEntry *he;
  161.     DoMethod(hge->LinkList,MUIM_List_GetEntry,i,&he);
  162.     DoMethod(URLList,MUIM_List_InsertSingle,he,MUIV_List_Insert_Bottom);
  163.   }
  164.   set(URLList,MUIA_List_Quiet,FALSE);
  165.   set(URLGroupList,MUIA_List_Quiet,FALSE);
  166.   set(BT_HotlistGroupParent,MUIA_Disabled,hge->Parent?FALSE:TRUE);
  167.   CurrentShownURLGroup=hge;    
  168. }
  169.  
  170. __saveds __asm APTR SelectHotlistConstructFunc(register __a0 struct Hook *hook,register __a2 APTR pool,register __a1 struct HotlistGroupEntry *hge)
  171. {
  172.   struct HotlistGroupEntry *new;
  173.   if(new=AllocPooled(pool,sizeof(struct HotlistGroupEntry)))
  174.   {
  175.     *new=*hge;
  176.     return(new);
  177.   }
  178.   return(NULL);
  179. }
  180. struct Hook SelectHotlistConstructHook = {{NULL,NULL},(void *)SelectHotlistConstructFunc,NULL,NULL};
  181.  
  182. __saveds __asm VOID SelectHotlistDestructFunc(register __a0 struct Hook *hook,register __a2 APTR pool,register __a1 struct HotlistGroupEntry *hge)
  183. {
  184.   FreePooled(pool,hge,sizeof(struct HotlistGroupEntry));
  185. }
  186. struct Hook SelectHotlistDestructHook = {{NULL,NULL},(void *)SelectHotlistDestructFunc,NULL,NULL};
  187.  
  188. __saveds __asm LONG SelectHotlistCompareFunc(register __a0 struct Hook *hook, register __a1 struct HotlistGroupEntry *hge1,register __a2 struct HotlistGroupEntry *hge2)
  189. {
  190.   return(stricmp(hge1->FullTitle,hge2->FullTitle));
  191. }
  192. struct Hook SelectHotlistCompareHook = {{NULL,NULL},(void *)SelectHotlistCompareFunc,NULL,NULL};
  193.  
  194. __saveds __asm LONG SelectHotlistDisplayFunc(register __a0 struct Hook *hook,register __a2 char **array,register __a1 struct HotlistGroupEntry *hge)
  195. {
  196.   *array  = hge->FullTitle[0]?hge->FullTitle:"Root";
  197.   return(0);
  198. }
  199. struct Hook SelectHotlistDisplayHook = {{NULL,NULL},(void *)SelectHotlistDisplayFunc,NULL,NULL};
  200.  
  201. void ScanHotlistGroups(APTR List,struct HotlistGroupEntry *hge,struct HotlistGroupEntry *HiddenGroup)
  202. {
  203.   long anz,i;
  204.   if(hge!=HiddenGroup)
  205.     DoMethod(List,MUIM_List_InsertSingle,hge,MUIV_List_Insert_Sorted);
  206.   get(hge->ChildList,MUIA_List_Entries,&anz);
  207.   for(i=0;i<anz;i++)
  208.   {
  209.     struct HotlistGroupEntry *entry;
  210.     DoMethod(hge->ChildList,MUIM_List_GetEntry,i,&entry);
  211.     ScanHotlistGroups(List,entry,HiddenGroup);
  212.   }
  213. }
  214.  
  215. struct HotlistGroupEntry *SelectHotlistGroup(char *Title,struct HotlistGroupEntry *HiddenGroup)
  216. {
  217.   APTR win,LV_Groups,BT_Ok,BT_Cancel;
  218.   BOOL edit_running=TRUE;
  219.   struct HotlistGroupEntry *ret=NULL;
  220.   ULONG signals;
  221.   win=WindowObject,
  222.     MUIA_Window_Title,Title,
  223.     MUIA_Window_ID,MAKE_ID('S','H','L','G'),
  224.     WindowContents,VGroup,
  225.       Child,LV_Groups=ListviewObject,
  226.         MUIA_Listview_List,ListObject,
  227.           InputListFrame,
  228.           MUIA_List_ConstructHook,&SelectHotlistConstructHook,
  229.           MUIA_List_DestructHook, &SelectHotlistDestructHook,
  230.           MUIA_List_DisplayHook,  &SelectHotlistDisplayHook,
  231.           MUIA_List_CompareHook,  &SelectHotlistCompareHook,
  232.           End,
  233.         End,
  234.       Child,HGroup,
  235.         MUIA_Group_SameWidth,TRUE,
  236.         Child,BT_Ok=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT_OK)),
  237.         Child,BT_Cancel=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT_CANCEL)),
  238.         End,
  239.       End,
  240.     End;
  241.  
  242.   ScanHotlistGroups(LV_Groups,&GroupRootList,HiddenGroup);
  243.  
  244.   if(win)
  245.   {
  246.     DoMethod(App,OM_ADDMEMBER,win);
  247.     DoMethod(BT_Ok,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,2);
  248.     DoMethod(BT_Cancel,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,1);
  249.     DoMethod(win,MUIM_Notify,MUIA_Window_CloseRequest,TRUE,App,2,MUIM_Application_ReturnID,1);
  250.  
  251.     DoMethod(win,MUIM_Window_SetCycleChain,LV_Groups,BT_Ok,BT_Cancel,NULL);
  252.  
  253.     DoMethod(LV_Groups,MUIM_Notify,MUIA_Listview_DoubleClick,TRUE,App,2,MUIM_Application_ReturnID,2);
  254.  
  255.     set(App,MUIA_Application_Sleep,TRUE);
  256.     set(win,MUIA_Window_Open,TRUE);
  257.  
  258.     while(edit_running)
  259.     {
  260.       switch(DoMethod(App,MUIM_Application_Input,&signals))
  261.       {
  262.         case MUIV_Application_ReturnID_Quit:
  263.         case 1:
  264.           ret=NULL;
  265.           edit_running=FALSE;
  266.           break;
  267.         case 2:
  268.           {
  269.             DoMethod(LV_Groups,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&ret);
  270.             edit_running=FALSE;
  271.           }
  272.           break;
  273.       }
  274.       if(edit_running&&signals) Wait(signals);
  275.     }
  276.     set(win,MUIA_Window_Open,FALSE);
  277.     set(App,MUIA_Application_Sleep,FALSE);
  278.     DoMethod(App,OM_REMMEMBER,win);
  279.     MUI_DisposeObject(win);
  280.   }
  281.  
  282.   return(ret);
  283. }
  284. ///
  285. ///HotlistLinkFunctions
  286. __saveds __asm APTR HotlistConstructFunc(register __a0 struct Hook *hook,register __a2 APTR pool,register __a1 struct HotlistEntry *he)
  287. {
  288.   struct HotlistEntry *new;
  289.   if(new=AllocPooled(pool,sizeof(struct HotlistEntry)))
  290.   {
  291.     *new=*he;
  292.     return(new);
  293.   }
  294.   return(NULL);
  295. }
  296. struct Hook HotlistConstructHook = {{NULL,NULL},(void *)HotlistConstructFunc,NULL,NULL};
  297.  
  298. __saveds __asm VOID HotlistDestructFunc(register __a0 struct Hook *hook,register __a2 APTR pool,register __a1 struct HotlistEntry *he)
  299. {
  300.   FreePooled(pool,he,sizeof(struct HotlistEntry));
  301. }
  302. struct Hook HotlistDestructHook = {{NULL,NULL},(void *)HotlistDestructFunc,NULL,NULL};
  303.  
  304. __saveds __asm LONG HotlistCompareFunc(register __a0 struct Hook *hook, register __a1 struct HotlistEntry *he1,register __a2 struct HotlistEntry *he2)
  305. {
  306.   return(stricmp(he1->Title,he2->Title));
  307. }
  308. struct Hook HotlistCompareHook = {{NULL,NULL},(void *)HotlistCompareFunc,NULL,NULL};
  309.  
  310. __saveds __asm LONG HotlistDisplayFunc(register __a0 struct Hook *hook,register __a2 char **array,register __a1 struct HotlistEntry *he)
  311. {
  312.   *array  = he->Title;
  313.   return(0);
  314. }
  315. struct Hook HotlistDisplayHook = {{NULL,NULL},(void *)HotlistDisplayFunc,NULL,NULL};
  316.  
  317. __saveds __asm void HotlistButtonsFunc(register __a2 Object *List,register __a1 APTR *arg)
  318. {
  319.   long Count,Selected;
  320.   get(List,MUIA_List_Entries,&Count);
  321.   get(List,MUIA_List_Active,&Selected);
  322.   if(Selected==-1)
  323.   {
  324.     set(BT_HotlistDelete,MUIA_Disabled,TRUE);
  325.     set(BT_HotlistEdit,MUIA_Disabled,TRUE);
  326.     set(BT_HotlistMove,MUIA_Disabled,TRUE);
  327.     set(BT_HotlistUp,MUIA_Disabled,TRUE);
  328.     set(BT_HotlistDown,MUIA_Disabled,TRUE);
  329.   }
  330.   else
  331.   {
  332.     set(BT_HotlistDelete,MUIA_Disabled,FALSE);
  333.     set(BT_HotlistEdit,MUIA_Disabled,FALSE);
  334.     set(BT_HotlistMove,MUIA_Disabled,FALSE);
  335.     set(BT_HotlistUp,MUIA_Disabled,Selected<1?TRUE:FALSE);
  336.     set(BT_HotlistDown,MUIA_Disabled,Selected==Count-1?TRUE:FALSE);
  337.   }
  338. }
  339.  
  340. struct Hook HotlistButtonsHook={{NULL,NULL},(VOID *)HotlistButtonsFunc,NULL,NULL};
  341.  
  342. BOOL EditHotlistEntry(struct HotlistEntry *Entry)
  343. {
  344.   APTR win,ST_Title,ST_Location,BT_Ok,BT_Cancel;
  345.   BOOL edit_running=TRUE,ret=FALSE;
  346.   ULONG signals;
  347.   win=WindowObject,
  348.     MUIA_Window_Title,GetamosaicString(MSG_HOTLIST_EDIT_WINDOW_TITLE),
  349.     MUIA_Window_ID,MAKE_ID('H','L','S','T'),
  350.     WindowContents,VGroup,
  351.       Child,ColGroup(2),
  352.         Child,Label2(GetamosaicString(MSG_HOTLIST_EDIT_TITLE)),
  353.         Child,ST_Title=String(Entry->Title,128),
  354.         Child,Label2(GetamosaicString(MSG_HOTLIST_EDIT_URL)),
  355.         Child,ST_Location=String(Entry->Location,500),
  356.         End,
  357.       Child,HGroup,
  358.         MUIA_Group_SameWidth,TRUE,
  359.         Child,BT_Ok=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT_OK)),
  360.         Child,BT_Cancel=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT_CANCEL)),
  361.         End,
  362.       End,
  363.     End;               
  364.  
  365.   if(win)
  366.   {
  367.     DoMethod(App,OM_ADDMEMBER,win);
  368.     DoMethod(BT_Ok,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,2);
  369.     DoMethod(BT_Cancel,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,1);
  370.     DoMethod(win,MUIM_Notify,MUIA_Window_CloseRequest,TRUE,App,2,MUIM_Application_ReturnID,1);
  371.  
  372.     DoMethod(win,MUIM_Window_SetCycleChain,ST_Title,ST_Location,BT_Ok,BT_Cancel,NULL);
  373.  
  374.     DoMethod(ST_Title,MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,win,3,MUIM_Set,MUIA_Window_ActiveObject,ST_Location);
  375.     DoMethod(ST_Location,MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,win,3,MUIM_Set,MUIA_Window_ActiveObject,BT_Ok);
  376.  
  377.     set(win,MUIA_Window_ActiveObject,ST_Title);
  378.     set(App,MUIA_Application_Sleep,TRUE);
  379.     set(win,MUIA_Window_Open,TRUE);
  380.  
  381.     while(edit_running)
  382.     {
  383.       switch(DoMethod(App,MUIM_Application_Input,&signals))
  384.       {
  385.         case MUIV_Application_ReturnID_Quit:
  386.         case 1:
  387.           ret=FALSE;
  388.           edit_running=FALSE;
  389.           break;
  390.         case 2:
  391.           {
  392.             char *Title,*Location;
  393.             get(ST_Title,MUIA_String_Contents,&Title);
  394.             get(ST_Location,MUIA_String_Contents,&Location);
  395.             strcpy(Entry->Title,Title);
  396.             strcpy(Entry->Location,Location);
  397.             ret=TRUE;
  398.             edit_running=FALSE;
  399.           }
  400.           break;
  401.       }
  402.       if(edit_running&&signals) Wait(signals);
  403.     }
  404.     set(win,MUIA_Window_Open,FALSE);
  405.     set(App,MUIA_Application_Sleep,FALSE);
  406.     DoMethod(App,OM_REMMEMBER,win);
  407.     MUI_DisposeObject(win);
  408.   }     
  409.  
  410.   return(ret);
  411. }
  412.  
  413. __saveds __asm void HotlistNewFunc(register __a2 Object *List,register __a1 APTR *arg)
  414. {
  415.   char *Title,*Location;
  416.   struct HotlistEntry Entry;
  417.   struct tm *p;
  418.   time_t t;
  419.   time(&t);
  420.   p=localtime(&t);
  421.   if(TX_Title)
  422.     get(TX_Title,MUIA_Text_Contents,&Title);
  423.   else
  424.     get(WI_Main,MUIA_Window_Title,&Title);
  425.   get(TX_URL,MUIA_String_Contents,&Location);
  426.   strcpy(Entry.Title,Title);
  427.   strcpy(Entry.Location,Location);
  428.   strftime(&Entry.Date[0],30,"%a %b %d %H:%M:%S %Y",p);
  429.   if(EditHotlistEntry(&Entry))
  430.   {
  431.     DoMethod(List,MUIM_List_InsertSingle,&Entry,MUIV_List_Insert_Bottom);
  432.     DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_InsertSingle,&Entry,MUIV_List_Insert_Bottom);
  433.     SaveHotlist();
  434.   }
  435. }
  436. struct Hook HotlistNewHook={{NULL,NULL},(VOID *)HotlistNewFunc,NULL,NULL};
  437.  
  438. __saveds __asm void HotlistDeleteFunc(register __a2 Object *List,register __a1 APTR *arg)
  439. {
  440.   long Active;
  441.   get(List,MUIA_List_Active,&Active);
  442.   DoMethod(List,MUIM_List_Remove,Active);
  443.   DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_Remove,Active);
  444.   SaveHotlist();
  445. }     
  446. struct Hook HotlistDeleteHook={{NULL,NULL},(VOID *)HotlistDeleteFunc,NULL,NULL};
  447.  
  448. __saveds __asm void HotlistEditFunc(register __a2 Object *List,register __a1 APTR *arg)
  449. {
  450.   long Active;
  451.   struct HotlistEntry *Entry;
  452.   get(List,MUIA_List_Active,&Active);
  453.   DoMethod(List,MUIM_List_GetEntry,Active,&Entry);
  454.   if(EditHotlistEntry(Entry))
  455.   {
  456.     DoMethod(List,MUIM_List_Redraw,MUIV_List_Redraw_Active);
  457.     DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_Remove,Active);
  458.     DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_InsertSingle,Entry,Active);
  459.     SaveHotlist();
  460.   }
  461. }     
  462. struct Hook HotlistEditHook={{NULL,NULL},(VOID *)HotlistEditFunc,NULL,NULL};
  463.  
  464. __saveds __asm void HotlistAddFunc(register __a2 Object *List,register __a1 APTR *arg)
  465. {
  466.   char *Title,*Location;
  467.   struct HotlistEntry Entry;
  468.   struct tm *p;
  469.   time_t t;
  470.   time(&t);
  471.   p=localtime(&t);
  472.   if(TX_Title)
  473.     get(TX_Title,MUIA_Text_Contents,&Title);
  474.   else
  475.     get(WI_Main,MUIA_Window_Title,&Title);
  476.   get(TX_URL,MUIA_String_Contents,&Location);
  477.   strcpy(Entry.Title,Title);
  478.   strcpy(Entry.Location,Location);
  479.   strftime(&Entry.Date[0],30,"%a %b %d %H:%M:%S %Y",p);
  480.   DoMethod(List,MUIM_List_InsertSingle,&Entry,MUIV_List_Insert_Bottom);
  481.   DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_InsertSingle,&Entry,MUIV_List_Insert_Bottom);
  482.   SaveHotlist();
  483. }
  484. struct Hook HotlistAddHook={{NULL,NULL},(VOID *)HotlistAddFunc,NULL,NULL};
  485.  
  486. __saveds __asm void HotlistSortFunc(register __a2 Object *List,register __a1 APTR *arg)
  487. {
  488.   DoMethod(List,MUIM_List_Sort);
  489.   DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_Sort);
  490.   set(List,MUIA_List_Active,MUIV_List_Active_Off);
  491.   SaveHotlist();
  492. }     
  493. struct Hook HotlistSortHook={{NULL,NULL},(VOID *)HotlistSortFunc,NULL,NULL};
  494.  
  495. __saveds __asm void HotlistMoveFunc(register __a2 Object *List,register __a1 APTR *arg)
  496. {
  497.   long Active;
  498.   struct HotlistEntry *he;
  499.   struct HotlistGroupEntry *hge;
  500.  
  501.   get(URLList,MUIA_List_Active,&Active);
  502.   if(Active!=-1)
  503.   {
  504.     DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_GetEntry,Active,&he);
  505.     if(hge=SelectHotlistGroup("Where do you want to move this link?",CurrentShownURLGroup))
  506.     {
  507.       DoMethod(hge->LinkList,MUIM_List_InsertSingle,he,MUIV_List_Insert_Bottom);
  508.       DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_Remove,Active);
  509.       ShowHotlist(CurrentShownURLGroup);
  510.       SaveHotlist();
  511.     }
  512.   }
  513. }
  514. struct Hook HotlistMoveHook={{NULL,NULL},(VOID *)HotlistMoveFunc,NULL,NULL};
  515.  
  516. __saveds __asm void HotlistUpFunc(register __a2 Object *List,register __a1 APTR *arg)
  517. {
  518.   long Count,Selected;
  519.   get(List,MUIA_List_Entries,&Count);
  520.   get(List,MUIA_List_Active,&Selected);
  521.   if(Selected>0)
  522.   {
  523.     DoMethod(List,MUIM_List_Exchange,Selected,Selected-1);
  524.     DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_Exchange,Selected,Selected-1);
  525.     set(List,MUIA_List_Active,Selected-1);
  526.     SaveHotlist();
  527.   }
  528. }     
  529. struct Hook HotlistUpHook={{NULL,NULL},(VOID *)HotlistUpFunc,NULL,NULL};
  530.  
  531. __saveds __asm void HotlistDownFunc(register __a2 Object *List,register __a1 APTR *arg)
  532. {
  533.   long Count,Selected;
  534.   get(List,MUIA_List_Entries,&Count);
  535.   get(List,MUIA_List_Active,&Selected);
  536.   if(Selected>-1&&Selected<Count-1)
  537.   {
  538.     DoMethod(List,MUIM_List_Exchange,Selected,Selected+1);
  539.     DoMethod(CurrentShownURLGroup->LinkList,MUIM_List_Exchange,Selected,Selected+1);
  540.     set(List,MUIA_List_Active,Selected+1);
  541.     SaveHotlist();
  542.   }  
  543. }     
  544. struct Hook HotlistDownHook={{NULL,NULL},(VOID *)HotlistDownFunc,NULL,NULL};
  545.          
  546. ///
  547. ///HotlistGroupFunctions
  548. __saveds __asm VOID HotlistGroupDestructFunc(register __a0 struct Hook *hook,register __a2 APTR pool,register __a1 struct HotlistGroupEntry *hge)
  549. {
  550.   if(hge->ChildList)
  551.   {
  552.     DoMethod(hge->ChildList,MUIM_List_Clear,TRUE);
  553.     MUI_DisposeObject(hge->ChildList);
  554.   }
  555.   if(hge->LinkList)
  556.   {
  557.     DoMethod(hge->LinkList,MUIM_List_Clear,TRUE);
  558.     MUI_DisposeObject(hge->LinkList);
  559.   }   
  560.   FreePooled(pool,hge,sizeof(struct HotlistGroupEntry));
  561. }
  562. struct Hook HotlistGroupDestructHook = {{NULL,NULL},(void *)HotlistGroupDestructFunc,NULL,NULL};
  563.  
  564. __saveds __asm LONG HotlistGroupCompareFunc(register __a0 struct Hook *hook, register __a1 struct HotlistGroupEntry *hge1,register __a2 struct HotlistGroupEntry *hge2)
  565. {
  566.   return(stricmp(hge1->Title,hge2->Title));
  567. }
  568. struct Hook HotlistGroupCompareHook = {{NULL,NULL},(void *)HotlistGroupCompareFunc,NULL,NULL};
  569.  
  570. __saveds __asm APTR HotlistGroupConstructFunc(register __a0 struct Hook *hook,register __a2 APTR pool,register __a1 struct HotlistGroupEntry *hge)
  571. {
  572.   struct HotlistGroupEntry *new;
  573.   if(new=AllocPooled(pool,sizeof(struct HotlistGroupEntry)))
  574.   {
  575.     *new=*hge;
  576.     if(new->ChildList=ListObject,
  577.       MUIA_List_ConstructHook,hook,
  578.       MUIA_List_DestructHook, &HotlistGroupDestructHook,
  579.       MUIA_List_CompareHook,  &HotlistGroupCompareHook,
  580.       End)
  581.     if(new->LinkList=ListObject,
  582.       MUIA_List_ConstructHook,&HotlistConstructHook,
  583.       MUIA_List_DestructHook, &HotlistDestructHook,
  584.       MUIA_List_CompareHook,  &HotlistCompareHook,
  585.       End)   
  586.     return(new);
  587.     FreePooled(pool,hge,sizeof(struct HotlistGroupEntry));
  588.   }
  589.   return(NULL);
  590. }
  591.  
  592. struct Hook HotlistGroupConstructHook = {{NULL,NULL},(void *)HotlistGroupConstructFunc,NULL,NULL};
  593.  
  594. __saveds __asm LONG HotlistGroupDisplayFunc(register __a0 struct Hook *hook,register __a2 char **array,register __a1 struct HotlistGroupEntry *hge)
  595. {
  596.   *array  = hge->Title;
  597.   return(0);
  598. }
  599. struct Hook HotlistGroupDisplayHook = {{NULL,NULL},(void *)HotlistGroupDisplayFunc,NULL,NULL};
  600.  
  601. __saveds __asm void HotlistGroupButtonsFunc(register __a2 Object *List,register __a1 APTR *arg)
  602. {
  603.   long Count,Selected;
  604.   get(List,MUIA_List_Active,&Selected);
  605.   if(Selected==-1)
  606.   {
  607.     set(BT_HotlistGroupDelete,MUIA_Disabled,TRUE);
  608.     set(BT_HotlistGroupEdit,MUIA_Disabled,TRUE);
  609.     set(BT_HotlistGroupUp,MUIA_Disabled,TRUE);
  610.     set(BT_HotlistGroupDown,MUIA_Disabled,TRUE); 
  611.   }
  612.   else
  613.   {
  614.     get(List,MUIA_List_Entries,&Count);
  615.     set(BT_HotlistGroupDelete,MUIA_Disabled,FALSE);
  616.     set(BT_HotlistGroupEdit,MUIA_Disabled,FALSE);
  617.     set(BT_HotlistGroupUp,MUIA_Disabled,Selected<1?TRUE:FALSE);
  618.     set(BT_HotlistGroupDown,MUIA_Disabled,Selected==Count-1?TRUE:FALSE);   
  619.   }
  620. }
  621.  
  622. struct Hook HotlistGroupButtonsHook={{NULL,NULL},(VOID *)HotlistGroupButtonsFunc,NULL,NULL};
  623.  
  624. __saveds __asm void HotlistGroupSelectFunc(register __a2 Object *List,register __a1 APTR *arg)
  625. {
  626.   long Selected;
  627.   get(List,MUIA_List_Active,&Selected);
  628.   if(Selected!=-1)
  629.   {
  630.     struct HotlistGroupEntry *hge;
  631.     DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_GetEntry,Selected,&hge);
  632.     ShowHotlist(hge);
  633.   }
  634. }
  635.  
  636. struct Hook HotlistGroupSelectHook={{NULL,NULL},(VOID *)HotlistGroupSelectFunc,NULL,NULL};
  637.  
  638. __saveds __asm void HotlistGroupParentFunc(register __a2 Object *List,register __a1 APTR *arg)
  639. {
  640.   if(CurrentShownURLGroup->Parent)
  641.     ShowHotlist(CurrentShownURLGroup->Parent);
  642. }
  643.  
  644. struct Hook HotlistGroupParentHook={{NULL,NULL},(VOID *)HotlistGroupParentFunc,NULL,NULL};
  645.  
  646. BOOL EditHotlistGroupEntry(struct HotlistGroupEntry *Entry)
  647. {
  648.   APTR win,ST_Title,BT_Ok,BT_Cancel;
  649.   BOOL edit_running=TRUE,ret=FALSE;
  650.   ULONG signals;
  651.   win=WindowObject,
  652.     MUIA_Window_Title,GetamosaicString(MSG_HOTLIST_EDITGROUP_TITLE),
  653.     MUIA_Window_ID,MAKE_ID('H','L','S','G'),
  654.     WindowContents,VGroup,
  655.       Child,ColGroup(2),
  656.         Child,Label2(GetamosaicString(MSG_HOTLIST_EDIT_TITLE)),
  657.         Child,ST_Title=String(Entry->Title,128),
  658.         End,
  659.       Child,HGroup,
  660.         MUIA_Group_SameWidth,TRUE,
  661.         Child,BT_Ok=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT_OK)),
  662.         Child,BT_Cancel=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT_CANCEL)),
  663.         End,
  664.       End,
  665.     End;               
  666.  
  667.   if(win)
  668.   {
  669.     DoMethod(App,OM_ADDMEMBER,win);
  670.     DoMethod(BT_Ok,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,2);
  671.     DoMethod(BT_Cancel,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,1);
  672.     DoMethod(win,MUIM_Notify,MUIA_Window_CloseRequest,TRUE,App,2,MUIM_Application_ReturnID,1);
  673.  
  674.     DoMethod(win,MUIM_Window_SetCycleChain,ST_Title,BT_Ok,BT_Cancel,NULL);
  675.  
  676.     DoMethod(ST_Title,MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,win,3,MUIM_Set,MUIA_Window_ActiveObject,BT_Ok);
  677.  
  678.     set(win,MUIA_Window_ActiveObject,ST_Title);
  679.     set(App,MUIA_Application_Sleep,TRUE);
  680.     set(win,MUIA_Window_Open,TRUE);
  681.  
  682.     while(edit_running)
  683.     {
  684.       switch(DoMethod(App,MUIM_Application_Input,&signals))
  685.       {
  686.         case MUIV_Application_ReturnID_Quit:
  687.         case 1:
  688.           ret=FALSE;
  689.           edit_running=FALSE;
  690.           break;
  691.         case 2:
  692.           {
  693.             char *Title;
  694.             long DelayImages;
  695.             get(ST_Title,MUIA_String_Contents,&Title);
  696.             strcpy(Entry->Title,Title);
  697.             *PathPart(Entry->FullTitle)=NULL;
  698.             AddPart(Entry->FullTitle,Entry->Title,200);
  699.             ret=TRUE;
  700.             edit_running=FALSE;
  701.           }
  702.           break;
  703.       }
  704.       if(edit_running&&signals) Wait(signals);
  705.     }
  706.     set(win,MUIA_Window_Open,FALSE);
  707.     set(App,MUIA_Application_Sleep,FALSE);
  708.     DoMethod(App,OM_REMMEMBER,win);
  709.     MUI_DisposeObject(win);
  710.   }     
  711.  
  712.   return(ret);
  713. }
  714.  
  715. __saveds __asm void HotlistGroupNewFunc(register __a2 Object *List,register __a1 APTR *arg)
  716. {
  717.   struct HotlistGroupEntry Entry;
  718.   strcpy(Entry.Title,GetamosaicString(MSG_HOTLIST_GROUP_DEFAULTNAME));
  719.   Entry.Parent=CurrentShownURLGroup;
  720.   strcpy(Entry.FullTitle,Entry.Parent->Title);
  721.   AddPart(Entry.FullTitle,Entry.Title,200);
  722.   if(EditHotlistGroupEntry(&Entry))
  723.   {
  724.     DoMethod(List,MUIM_List_InsertSingle,&Entry,MUIV_List_Insert_Bottom);
  725.     DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_InsertSingle,&Entry,MUIV_List_Insert_Bottom);
  726.     SaveHotlist();
  727.   }
  728. }
  729. struct Hook HotlistGroupNewHook={{NULL,NULL},(VOID *)HotlistGroupNewFunc,NULL,NULL};
  730.  
  731. __saveds __asm void HotlistGroupDeleteFunc(register __a2 Object *List,register __a1 APTR *arg)
  732. {
  733.   long Active;
  734.   get(List,MUIA_List_Active,&Active);
  735.   DoMethod(List,MUIM_List_Remove,Active);
  736.   DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_Remove,Active);
  737.   SaveHotlist();
  738. }     
  739. struct Hook HotlistGroupDeleteHook={{NULL,NULL},(VOID *)HotlistGroupDeleteFunc,NULL,NULL};
  740.  
  741. __saveds __asm void HotlistGroupEditFunc(register __a2 Object *List,register __a1 APTR *arg)
  742. {
  743.   long Active;
  744.   struct HotlistGroupEntry *Entry;
  745.   get(List,MUIA_List_Active,&Active);
  746.   DoMethod(List,MUIM_List_GetEntry,Active,&Entry);
  747.   if(EditHotlistGroupEntry(Entry))
  748.   {
  749.     DoMethod(List,MUIM_List_Redraw,MUIV_List_Redraw_Active);
  750.     DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_Remove,Active);
  751.     DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_InsertSingle,Entry,Active);
  752.     SaveHotlist();
  753.   }
  754. }     
  755. struct Hook HotlistGroupEditHook={{NULL,NULL},(VOID *)HotlistGroupEditFunc,NULL,NULL};
  756.  
  757. __saveds __asm void HotlistGroupSortFunc(register __a2 Object *List,register __a1 APTR *arg)
  758. {
  759.   DoMethod(List,MUIM_List_Sort);
  760.   DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_Sort);
  761.   set(List,MUIA_List_Active,MUIV_List_Active_Off);
  762.   SaveHotlist();
  763. }     
  764. struct Hook HotlistGroupSortHook={{NULL,NULL},(VOID *)HotlistGroupSortFunc,NULL,NULL};
  765.  
  766. void CopyHotlistGroup(struct HotlistGroupEntry *source,struct HotlistGroupEntry *dest)
  767. {
  768.   long anz,i;
  769.   get(source->LinkList,MUIA_List_Entries,&anz);
  770.   for(i=0;i<anz;i++)
  771.   {
  772.     struct HotlistEntry *entry;
  773.     DoMethod(source->LinkList,MUIM_List_GetEntry,i,&entry);
  774.     DoMethod(dest->LinkList,MUIM_List_InsertSingle,entry,MUIV_List_Insert_Bottom);
  775.   }
  776.   get(source->ChildList,MUIA_List_Entries,&anz);
  777.   for(i=0;i<anz;i++)
  778.   {
  779.     struct HotlistGroupEntry *entry,*newdest;
  780.     DoMethod(source->ChildList,MUIM_List_GetEntry,i,&entry);
  781.     DoMethod(dest->ChildList,MUIM_List_InsertSingle,entry,MUIV_List_Insert_Bottom);
  782.     DoMethod(dest->ChildList,MUIM_List_GetEntry,i,&newdest);
  783.     CopyHotlistGroup(entry,newdest);
  784.   }
  785. }
  786.  
  787. __saveds __asm void HotlistGroupUpFunc(register __a2 Object *List,register __a1 APTR *arg)
  788. {
  789.   long Count,Selected;
  790.   get(List,MUIA_List_Entries,&Count);
  791.   get(List,MUIA_List_Active,&Selected);
  792.   if(Selected>0)
  793.   {
  794.     DoMethod(List,MUIM_List_Exchange,Selected,Selected-1);
  795.     DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_Exchange,Selected,Selected-1);
  796.     set(List,MUIA_List_Active,Selected-1);
  797.     SaveHotlist();
  798.   }
  799. }     
  800. struct Hook HotlistGroupUpHook={{NULL,NULL},(VOID *)HotlistGroupUpFunc,NULL,NULL};
  801.  
  802. __saveds __asm void HotlistGroupDownFunc(register __a2 Object *List,register __a1 APTR *arg)
  803. {
  804.   long Count,Selected;
  805.   get(List,MUIA_List_Entries,&Count);
  806.   get(List,MUIA_List_Active,&Selected);
  807.   if(Selected>-1&&Selected<Count-1)
  808.   {
  809.     DoMethod(List,MUIM_List_Exchange,Selected,Selected+1);
  810.     DoMethod(CurrentShownURLGroup->ChildList,MUIM_List_Exchange,Selected,Selected+1);
  811.     set(List,MUIA_List_Active,Selected+1);
  812.     SaveHotlist();
  813.   }  
  814. }     
  815. struct Hook HotlistGroupDownHook={{NULL,NULL},(VOID *)HotlistGroupDownFunc,NULL,NULL};
  816.  
  817. ///
  818. ///Hotlist Load/Save
  819. void LoadHotlist(void)
  820. {
  821.   char buffer[530],*d;
  822.   FILE *file;
  823.   struct HotlistEntry new;
  824.   struct HotlistGroupEntry *CurrentList;
  825.   set(App,MUIA_Application_Sleep,TRUE);
  826.   CurrentShownURLGroup=&GroupRootList;
  827.   GroupRootList.Parent=NULL;
  828.   strcpy(GroupRootList.Title,"");
  829.   if(GroupRootList.ChildList=ListObject,
  830.     MUIA_List_ConstructHook,&HotlistGroupConstructHook,
  831.     MUIA_List_DestructHook, &HotlistGroupDestructHook,
  832.     MUIA_List_CompareHook,  &HotlistGroupCompareHook,
  833.     End)
  834.   {  
  835.     if(GroupRootList.LinkList=ListObject,
  836.       MUIA_List_ConstructHook,&HotlistConstructHook,
  837.       MUIA_List_DestructHook, &HotlistDestructHook,
  838.       MUIA_List_CompareHook,  &HotlistCompareHook,
  839.       End)
  840.     {           
  841.       CurrentList=&GroupRootList;
  842.       if(file=fopen("env:mosaic/.mosaic-hotlist-default","r"))
  843.       {
  844.         if(fgets(buffer,530,file))
  845.         {
  846.           if(fgets(buffer,530,file))
  847.           {                
  848.             char FullPath[200];
  849.             int depth=0;
  850.             strcpy(FullPath,"");
  851.             while(fgets(buffer,530,file))
  852.             {
  853.               buffer[strlen(buffer)-1]=0;
  854.               if(!strnicmp(buffer,"@GROUP",6))
  855.               {
  856.                 struct HotlistGroupEntry *NewCurrent;
  857.                 int i;
  858.                 struct HotlistGroupEntry hge;
  859.                 hge.Depth=depth;
  860.                 hge.Parent=CurrentList;
  861.                 strcpy(hge.Title,&buffer[7]);
  862.                 AddPart(FullPath,hge.Title,200);
  863.                 strcpy(hge.FullTitle,FullPath);
  864.                 DoMethod(CurrentList->ChildList,MUIM_List_InsertSingle,&hge,MUIV_List_Insert_Bottom);
  865.                 set(CurrentList->ChildList,MUIA_List_Active,MUIV_List_Active_Bottom);
  866.                 DoMethod(CurrentList->ChildList,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&NewCurrent);
  867.                 CurrentList=NewCurrent;
  868.                 depth++;
  869.               }
  870.               else
  871.               {
  872.                 if(!strnicmp(buffer,"@ENDGROUP",9))
  873.                 {
  874.                   CurrentList=CurrentList->Parent;
  875.                   depth--;
  876.                   *PathPart(FullPath)=NULL;
  877.                 }
  878.                 else
  879.                 {
  880.                   char *d;
  881.                   struct HotlistEntry new;
  882.                   d=strstr(buffer," ");
  883.                   *d=NULL;
  884.                   strcpy(new.Location,buffer);
  885.                   strcpy(new.Date,d+1);
  886.                   if(fgets(buffer,128,file))
  887.                   {
  888.                     struct HotlistGroupEntry *hge;
  889.                     buffer[strlen(buffer)-1]=0;
  890.                     strcpy(new.Title,buffer);
  891.                     DoMethod(CurrentList->LinkList,MUIM_List_InsertSingle,&new,MUIV_List_Insert_Bottom);
  892.                   }      
  893.                 }
  894.               }
  895.             }
  896.           }
  897.         }
  898.         fclose(file);
  899.         ShowHotlist(CurrentShownURLGroup);
  900.       }
  901.     }
  902.   }
  903.   set(App,MUIA_Application_Sleep,FALSE);
  904. }          
  905.  
  906. void SaveGroup(FILE *file,struct HotlistGroupEntry *hge)
  907. {
  908.   long anz,i;
  909.   get(hge->LinkList,MUIA_List_Entries,&anz);
  910.   for(i=0;i<anz;i++)
  911.   {
  912.     struct HotlistEntry *entry;
  913.     DoMethod(hge->LinkList,MUIM_List_GetEntry,i,&entry);
  914.     fprintf(file,"%s %s\n%s\n",entry->Location,entry->Date,entry->Title);
  915.   }
  916.   get(hge->ChildList,MUIA_List_Entries,&anz);
  917.   for(i=0;i<anz;i++)
  918.   {
  919.     struct HotlistGroupEntry *entry;
  920.     DoMethod(hge->ChildList,MUIM_List_GetEntry,i,&entry);
  921.     fprintf(file,"@GROUP %s\n",entry->Title);
  922.     SaveGroup(file,entry);
  923.     fprintf(file,"@ENDGROUP\n");
  924.   }  
  925. }
  926.  
  927. void SaveHotlist(void)
  928. {
  929.   char *Files[]={"env:mosaic/.mosaic-hotlist-default","envarc:mosaic/.mosaic-hotlist-default"};
  930.   FILE *file;
  931.   int i;
  932.   set(App,MUIA_Application_Sleep,TRUE);
  933.   for(i=0;i<2;i++)
  934.   {
  935.     if(file=fopen(Files[i],"w"))
  936.     {
  937.       fprintf(file,"ncsa-xmosaic-hotlist-format-1\nDefault\n");
  938.       SaveGroup(file,&GroupRootList);
  939.       fclose(file);
  940.     }       
  941.   }
  942.   set(App,MUIA_Application_Sleep,FALSE);
  943. }
  944. /// ^^^ All this by rs
  945.  
  946. /*
  947. unsigned long update_debug_cb(void){
  948.   SetAttrs(DBG_Str_Gad,MUIA_String_Contents,DBGstr,TAG_DONE);
  949.   printf("Contents %s \n",DBGstr);
  950.   return (unsigned long) 0;
  951. }
  952. */
  953.   
  954. /*------------------------------------------------------------------------
  955.   Set up the application and notifications.
  956. ------------------------------------------------------------------------*/
  957. void mui_init(void)
  958. {
  959.   int (*visit_func) ();
  960.   void (*image_func) ();
  961.   extern struct Mui_Command RexxCommands[] ;
  962.   ULONG win_open;
  963.  
  964.   Object *SB_Vert,*SB_Horiz;
  965.  
  966.   Object *OK_Button,*BT_ShowEm;
  967.  
  968.   visit_func = anchor_visited_predicate;
  969.   image_func = ImageResolve;
  970.  
  971. //  DBGstr=(char *)calloc(50,sizeof(char));
  972.   
  973. //  strncpy(DBGstr,"???",19);
  974.  
  975.     App = ApplicationObject,
  976.         MUIA_Application_Title      , "AmigaMosaic",
  977.         MUIA_Application_Version    , amosaic_version,
  978.         MUIA_Application_Copyright  , "©1994,1995",
  979.         MUIA_Application_Author     , "The AMosaic DevTeam",
  980.         MUIA_Application_Description, "World Wide Web Browser.",
  981.         MUIA_Application_Base       , "AMOSAIC",
  982.         MUIA_Application_Commands    , RexxCommands,
  983.  
  984.         SubWindow, WI_Main = WindowObject,
  985.             MUIA_Window_Title, amosaic_window_title,
  986.             MUIA_Window_ID, MAKE_ID('M','A','I','N'),
  987. //            MUIA_Window_Menu, MN_Main,
  988.             MUIA_Window_Menustrip,MenustripObject,
  989.                 Child,MenuObject,MUIA_Menu_Title,GetamosaicString(MSG_MENU_PROJECT),
  990.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_OPEN_URL),GetamosaicString(MSG_MENU_OPEN_URL_SC),0,(APTR)mo_open_document),
  991.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_OPEN_LOCAL),GetamosaicString(MSG_MENU_OPEN_LOCAL_SC),0,(APTR)mo_open_local_document),
  992.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  993.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_RELOAD_CURRENT),GetamosaicString(MSG_MENU_RELOAD_CURRENT_SC),0,(APTR)mo_reload_document),
  994.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_REFRESH_CURRENT),0,NM_ITEMDISABLED,(APTR)mo_refresh_document),
  995. //                    Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_URL_TO_CLIPBOARD),GetamosaicString(MSG_MENU_URL_TO_CLIPBOARD_SC),0,(APTR)mo_url_to_clipboard),
  996.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  997.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_FIND_IN_CURRENT),GetamosaicString(MSG_MENU_FIND_IN_CURRENT_SC),0,(APTR)mo_search),
  998.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_VIEW_SOURCE),GetamosaicString(MSG_MENU_VIEW_SOURCE_SC),0,(APTR)mo_document_source),
  999.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  1000.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_SAVE_AS),GetamosaicString(MSG_MENU_SAVE_AS_SC),0,(APTR)mo_save_document),
  1001.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_PRINT),GetamosaicString(MSG_MENU_PRINT_SC),0,(APTR)mo_print_document),
  1002.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  1003.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_ABOUT),GetamosaicString(MSG_MENU_ABOUT_SC),0,(APTR)mo_about),
  1004.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_QUIT),GetamosaicString(MSG_MENU_QUIT_SC),0,(APTR)mo_exit_program),
  1005.                     End,
  1006.                 Child,MenuObject,MUIA_Menu_Title,GetamosaicString(MSG_MENU_EDIT),
  1007.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_URL_TO_CLIPBOARD),0,0,(APTR)mo_url_to_clipboard),
  1008. //                    Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_COPY),GetamosaicString(MSG_MENU_COPY_SC),NM_ITEMDISABLED,0),
  1009.                     End,
  1010.                 Child,MenuObject,MUIA_Menu_Title,GetamosaicString(MSG_MENU_OPTIONS),
  1011.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_LOAD_TO_DISK),GetamosaicString(MSG_MENU_LOAD_TO_DISK_SC),CHECKIT|MENUTOGGLE,(APTR)mo_binary_transfer),
  1012.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  1013.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_DELAY_IMAGE_LOADING),GetamosaicString(MSG_MENU_DELAY_IMAGE_LOADING_SC),CHECKIT|MENUTOGGLE,(APTR)mo_delay_image_loads),
  1014.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_LOAD_IMAGES),GetamosaicString(MSG_MENU_LOAD_IMAGES_SC),0,(APTR)mo_expand_images_current),
  1015.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  1016.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_ISINDEX_TO_FORM),0,CHECKIT | MENUTOGGLE,(APTR)mo_isindex_to_form),
  1017.  
  1018.                     Child,MenuitemObject,MUIA_Menuitem_Title,GetamosaicString(MSG_MENU_BUTTONS),
  1019.                         Child,MenuitemObject,MUIA_Menuitem_Title,GetamosaicString(MSG_MENU_TEXT_ONLY),MUIA_Menuitem_Checkit,TRUE,MUIA_Menuitem_Exclude,~1,MUIA_UserData,(APTR)mo_buttons_text,End,
  1020.                         Child,MenuitemObject,MUIA_Menuitem_Title,GetamosaicString(MSG_MENU_IMAGES_ONLY),MUIA_Menuitem_Checkit,TRUE,MUIA_Menuitem_Exclude,~2,MUIA_UserData,(APTR)mo_buttons_image,End,
  1021.                         Child,MenuitemObject,MUIA_Menuitem_Title,GetamosaicString(MSG_MENU_IMAGES_AND_TEXT),MUIA_Menuitem_Checkit,TRUE,MUIA_Menuitem_Exclude,~4,MUIA_UserData,(APTR)mo_buttons_imagetext,End,
  1022.                         End,
  1023.  
  1024.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  1025.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_FLUSH_IMAGE_CACHE),GetamosaicString(MSG_MENU_FLUSH_IMAGE_CACHE_SC),0,(APTR)mo_clear_image_cache),
  1026.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_CLEAR_GLOBAL_HISTORY),GetamosaicString(MSG_MENU_CLEAR_GLOBAL_HISTORY_SC),0,(APTR)mo_clear_global_history),
  1027.                     End,    
  1028.                 Child,MenuObject,MUIA_Menu_Title,GetamosaicString(MSG_MENU_NAVIGATE),
  1029.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_BACK),GetamosaicString(MSG_MENU_BACK_SC),0,(APTR)mo_back),
  1030.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_FORWARD),GetamosaicString(MSG_MENU_FORWARD_SC),0,(APTR)mo_forward),
  1031.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  1032.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_HOME_DOCUMENT),GetamosaicString(MSG_MENU_HOME_DOCUMENT_SC),0,(APTR)mo_home_document),
  1033.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_WINDOW_HISTORY),GetamosaicString(MSG_MENU_WINDOW_HISTORY_SC),0,(APTR)mo_history_list),
  1034.                     Child,MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL),
  1035.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_HOTLIST),GetamosaicString(MSG_MENU_HOTLIST_SC),0,(APTR)mo_jump_hot_list),
  1036.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_ADD_HOTLIST),GetamosaicString(MSG_MENU_ADD_HOTLIST_SC),0,(APTR)mo_add_hot_list),
  1037.                     End,    
  1038.                 Child,MN_RexxMenu=MenuObject,MUIA_Menu_Title,GetamosaicString(MSG_MENU_REXX),
  1039.                     Child,MUI_MakeObject(MUIO_Menuitem,GetamosaicString(MSG_MENU_MACRO),GetamosaicString(MSG_MENU_MACRO_SC),0,(APTR)mo_macro),
  1040.                     End,
  1041.                 End,
  1042.  
  1043.             WindowContents, TTopGroup=VGroup,
  1044.                 Child,TopGroup=HGroup, /* Title text */
  1045.                     Child, LB_Title = Label2(GetamosaicString(MSG_GADGET_TITLE)),
  1046.                     Child, TX_Title = TextObject, TextFrame, MUIA_Text_SetMin,FALSE,MUIA_ShortHelp,"This is the title of this document",MUIA_Background,MUII_TextBack,End,
  1047.                     End,
  1048.                 Child,HGroup,    /* Url + Buttons + Boing */
  1049.                     Child,VGroup, /* Url + Buttons */
  1050.                         Child,HGroup, /* Url */
  1051.                             Child,TextObject,MUIA_Text_PreParse,"\033r",MUIA_Text_Contents,GetamosaicString(MSG_GADGET_URL),MUIA_Weight,0,MUIA_FixWidthTxt,GetamosaicString(MSG_GADGET_TITLE),End,
  1052.               Child,HGroup,
  1053.                 MUIA_Group_Spacing,1,
  1054.                 MUIA_Group_SameHeight,TRUE,
  1055.                 Child,PopURL=PopobjectObject,
  1056.                   MUIA_Popstring_String,TX_URL=StringObject, StringFrame, MUIA_String_MaxLen,512,End, 
  1057.                   MUIA_Popstring_Button,PopButton(MUII_PopUp),
  1058.                   MUIA_Popobject_StrObjHook,&URLStrObjHook,
  1059.                   MUIA_Popobject_ObjStrHook,&URLObjStrHook,
  1060.                   MUIA_Popobject_Object,ColGroup(2),
  1061.                     MUIA_Group_Spacing,0,
  1062.                                             Child,BT_HotlistGroupParent=SimpleButton(GetamosaicString(MSG_HOTLIST_PARENT)),
  1063.                     Child,TX_HotlistGroupTitle=TextObject,TextFrame,MUIA_Background,MUII_TextBack,End,
  1064.                     Child,URLGroupList=ListviewObject,
  1065.                       MUIA_FixHeightTxt,"\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
  1066.                       MUIA_Listview_List,ListObject,
  1067.                         InputListFrame,
  1068.                         MUIA_List_ConstructHook,&HotlistGroupConstructHook,
  1069.                         MUIA_List_DestructHook, &HotlistGroupDestructHook,
  1070.                         MUIA_List_DisplayHook,  &HotlistGroupDisplayHook,
  1071.                         MUIA_List_CompareHook,  &HotlistGroupCompareHook,
  1072.                         End,
  1073.                       End,
  1074.                     Child,URLList=ListviewObject,
  1075.                       MUIA_Listview_List,ListObject,
  1076.                         InputListFrame,
  1077.                         MUIA_List_ConstructHook,&HotlistConstructHook,
  1078.                         MUIA_List_DestructHook, &HotlistDestructHook,
  1079.                         MUIA_List_DisplayHook,  &HotlistDisplayHook,
  1080.                         MUIA_List_CompareHook,  &HotlistCompareHook,
  1081.                         End,
  1082.                       End,               
  1083.                     Child,ColGroup(3),
  1084.                       MUIA_Weight,0,
  1085.                       MUIA_Group_Spacing,0,
  1086.                       MUIA_Group_SameWidth,TRUE,
  1087.                       Child,BT_HotlistGroupNew=SimpleButton(GetamosaicString(MSG_HOTLIST_NEW)),
  1088.                       Child,BT_HotlistGroupDelete=SimpleButton(GetamosaicString(MSG_HOTLIST_DELETE)),
  1089.                       Child,BT_HotlistGroupEdit=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT)),
  1090.                       Child,BT_HotlistGroupSort=SimpleButton(GetamosaicString(MSG_HOTLIST_SORT)),
  1091.                       Child,BT_HotlistGroupUp=SimpleButton("\033I[6:38]"),
  1092.                       Child,BT_HotlistGroupDown=SimpleButton("\033I[6:39]"),
  1093.                       End,
  1094.                     Child,ColGroup(3),
  1095.                       MUIA_Group_Spacing,0,
  1096.                       MUIA_Group_SameWidth,TRUE,
  1097.                       Child,BT_HotlistNew=SimpleButton(GetamosaicString(MSG_HOTLIST_NEW)),
  1098.                       Child,BT_HotlistDelete=SimpleButton(GetamosaicString(MSG_HOTLIST_DELETE)),
  1099.                       Child,BT_HotlistEdit=SimpleButton(GetamosaicString(MSG_HOTLIST_EDIT)),
  1100.                       Child,BT_HotlistSort=SimpleButton(GetamosaicString(MSG_HOTLIST_SORT)),
  1101.                       Child,BT_HotlistMove=SimpleButton(GetamosaicString(MSG_HOTLIST_MOVE)),
  1102.                       Child,HGroup,
  1103.                         MUIA_Group_Spacing,0,
  1104.                         Child,BT_HotlistUp=SimpleButton("\033I[6:38]"),
  1105.                         Child,BT_HotlistDown=SimpleButton("\033I[6:39]"),
  1106.                         End,
  1107.                       End,        
  1108.                     End,
  1109.                   End,
  1110.                                 Child,BT_AddHotlist=VGroup,
  1111.                                     MUIA_Weight,0,MUIA_InnerBottom,0,MUIA_InnerTop,0,
  1112.                                     MUIA_Group_Spacing,0,
  1113.                                     ButtonFrame,MUIA_Background,MUII_ButtonBack,MUIA_InputMode,MUIV_InputMode_RelVerify,
  1114.                                     Child,RectangleObject, MUIA_Weight, 1,End,
  1115.                                     Child,TextObject,MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,GetamosaicString(MSG_HOTLIST_ADD),MUIA_Weight,100,End,
  1116.                                     Child,RectangleObject, MUIA_Weight, 1,End,
  1117.                                     End,
  1118.                                 End,
  1119.                             End,
  1120.                         Child, HGroup, /* Buttons */
  1121.                             Child,HGroupV,
  1122.                                 VirtualFrame,
  1123.                                 MUIA_Group_Spacing,0,
  1124.                                 Child,ButtonGroup=HGroup,
  1125.                                     MUIA_Group_SameWidth,TRUE,
  1126.                                     MUIA_Weight,0,
  1127.                                     Child,BT_Back=VGroup,
  1128.                                         MUIA_ShortHelp,"This button takes\nyou back one page",
  1129.                                         ButtonFrame,
  1130. //                                        MUIA_HorizDisappear,7,
  1131.                                         MUIA_ControlChar,*GetamosaicString(MSG_BUTTON_BACK_SC),
  1132.                                         MUIA_Background,MUII_ButtonBack,
  1133.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  1134.                                         MUIA_Group_Spacing,0,
  1135.                                         Child,IButtonBack=HGroup,
  1136.                                             MUIA_Group_Spacing,0,
  1137.                                             Child,HSpace(0),
  1138.                                             Child,BodychunkObject,
  1139.                                                 MUIA_Bodychunk_Body,Back_body,
  1140.                                                 MUIA_Bodychunk_Compression,BACK_COMPRESSION,
  1141.                                                 MUIA_Bodychunk_Depth,BACK_DEPTH,
  1142.                                                 MUIA_Bodychunk_Masking,BACK_MASKING,
  1143.                                                 MUIA_Bitmap_Width,BACK_WIDTH,
  1144.                                                 MUIA_Bitmap_Height,BACK_HEIGHT,
  1145.                                                 MUIA_Bitmap_SourceColors,Back_colors,
  1146.                                                 MUIA_Bitmap_Transparent,0,
  1147.                                                 MUIA_FixWidth,BACK_WIDTH,
  1148.                                                 MUIA_FixHeight,BACK_HEIGHT,
  1149.                                                 End,
  1150.                                             Child,HSpace(0),
  1151.                                             End,
  1152.                                         Child,TButtonBack=TextObject,MUIA_Text_HiChar,*GetamosaicString(MSG_BUTTON_BACK_SC),MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,GetamosaicString(MSG_BUTTON_BACK),MUIA_Font,MUIV_Font_Tiny,End,
  1153.                                         End,
  1154.                                     Child,BT_Forward=VGroup,
  1155.                                         MUIA_ShortHelp,"This button takes\nyou forward one page",
  1156.                                         ButtonFrame,
  1157. //                                        MUIA_HorizDisappear,6,
  1158.                                         MUIA_ControlChar,*GetamosaicString(MSG_BUTTON_FORWARD_SC),
  1159.                                         MUIA_Background,MUII_ButtonBack,
  1160.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  1161.                                         MUIA_Group_Spacing,0,         
  1162.                                         Child,IButtonForward=HGroup,
  1163.                                             MUIA_Group_Spacing,0, 
  1164.                                             Child,HSpace(0),            
  1165.                                             Child,BodychunkObject,
  1166.                                                 MUIA_Bodychunk_Body,Forward_body,
  1167.                                                 MUIA_Bodychunk_Compression,FORWARD_COMPRESSION,
  1168.                                                 MUIA_Bodychunk_Depth,FORWARD_DEPTH,
  1169.                                                 MUIA_Bodychunk_Masking,FORWARD_MASKING,
  1170.                                                 MUIA_Bitmap_Width,FORWARD_WIDTH,
  1171.                                                 MUIA_Bitmap_Height,FORWARD_HEIGHT,
  1172.                                                 MUIA_Bitmap_SourceColors,Forward_colors,
  1173.                                                 MUIA_Bitmap_Transparent,0,
  1174.                                                 MUIA_FixWidth,FORWARD_WIDTH,
  1175.                                                 MUIA_FixHeight,FORWARD_HEIGHT,
  1176.                                                 End,            
  1177.                                             Child,HSpace(0),
  1178.                                             End,
  1179.                                         Child,TButtonForward=TextObject,MUIA_Text_HiChar,*GetamosaicString(MSG_BUTTON_FORWARD_SC),MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,GetamosaicString(MSG_BUTTON_FORWARD),MUIA_Font,MUIV_Font_Tiny,End,
  1180.                                         End,
  1181.                                     Child,BT_Reload=VGroup,
  1182.                                         MUIA_ShortHelp,"This button reloads\nthe current page",
  1183.                                         ButtonFrame,
  1184. //                                        MUIA_HorizDisappear,5,
  1185.                                         MUIA_ControlChar,*GetamosaicString(MSG_BUTTON_RELOAD_SC),
  1186.                                         MUIA_Background,MUII_ButtonBack,             
  1187.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  1188.                                         MUIA_Group_Spacing,0,         
  1189.                                         Child,IButtonReload=HGroup,
  1190.                                             MUIA_Group_Spacing,0, 
  1191.                                             Child,HSpace(0),             
  1192.                                             Child,BodychunkObject,
  1193.                                                 MUIA_Bodychunk_Body,Reload_body,
  1194.                                                 MUIA_Bodychunk_Compression,RELOAD_COMPRESSION,
  1195.                                                 MUIA_Bodychunk_Depth,RELOAD_DEPTH,
  1196.                                                 MUIA_Bodychunk_Masking,RELOAD_MASKING,
  1197.                                                 MUIA_Bitmap_Width,RELOAD_WIDTH,
  1198.                                                 MUIA_Bitmap_Height,RELOAD_HEIGHT,
  1199.                                                 MUIA_Bitmap_SourceColors,Reload_colors,
  1200.                                                 MUIA_Bitmap_Transparent,0,
  1201.                                                 MUIA_FixWidth,RELOAD_WIDTH,
  1202.                                                 MUIA_FixHeight,RELOAD_HEIGHT,
  1203.                                                 End,                
  1204.                                             Child,HSpace(0),
  1205.                                             End,
  1206.                                         Child,TButtonReload=TextObject,MUIA_Text_HiChar,*GetamosaicString(MSG_BUTTON_RELOAD_SC),MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,GetamosaicString(MSG_BUTTON_RELOAD),MUIA_Font,MUIV_Font_Tiny,End,
  1207.                                         End,
  1208.                                     Child,BT_Home=VGroup,
  1209.                                         MUIA_ShortHelp,"This button takes you to your\ndefault home page that you have\nin your configuration file.",
  1210.                                         ButtonFrame,
  1211. //                                        MUIA_HorizDisappear,4,
  1212.                                         MUIA_ControlChar,*GetamosaicString(MSG_BUTTON_HOME_SC),
  1213.                                         MUIA_Background,MUII_ButtonBack,             
  1214.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  1215.                                         MUIA_Group_Spacing,0,         
  1216.                                         Child,IButtonHome=HGroup,
  1217.                                             MUIA_Group_Spacing,0, 
  1218.                                             Child,HSpace(0),             
  1219.                                             Child,BodychunkObject,
  1220.                                                 MUIA_Bodychunk_Body,Home_body,
  1221.                                                 MUIA_Bodychunk_Compression,HOME_COMPRESSION,
  1222.                                                 MUIA_Bodychunk_Depth,HOME_DEPTH,
  1223.                                                 MUIA_Bodychunk_Masking,HOME_MASKING,
  1224.                                                 MUIA_Bitmap_Width,HOME_WIDTH,
  1225.                                                 MUIA_Bitmap_Height,HOME_HEIGHT,
  1226.                                                 MUIA_Bitmap_SourceColors,Home_colors,
  1227.                                                 MUIA_Bitmap_Transparent,0,
  1228.                                                 MUIA_FixWidth,HOME_WIDTH,
  1229.                                                 MUIA_FixHeight,HOME_HEIGHT,
  1230.                                                 End,                
  1231.                                             Child,HSpace(0),
  1232.                                             End,
  1233.                                         Child,TButtonHome=TextObject,MUIA_Text_HiChar,*GetamosaicString(MSG_BUTTON_HOME_SC),MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,GetamosaicString(MSG_BUTTON_HOME),MUIA_Font,MUIV_Font_Tiny,End,
  1234.                                         End,
  1235.                                     Child,BT_Open=VGroup,
  1236.                                         MUIA_ShortHelp,"This button opens a new location",
  1237.                                         ButtonFrame,
  1238. //                                        MUIA_HorizDisappear,3,
  1239.                                         MUIA_Background,MUII_ButtonBack,             
  1240.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  1241.                                         MUIA_Group_Spacing,0,         
  1242.                                         Child,IButtonOpen=HGroup,
  1243.                                             MUIA_Group_Spacing,0, 
  1244.                                             Child,HSpace(0),             
  1245.                                             Child,BodychunkObject,
  1246.                                                 MUIA_Bodychunk_Body,Open_body,
  1247.                                                 MUIA_Bodychunk_Compression,OPEN_COMPRESSION,
  1248.                                                 MUIA_Bodychunk_Depth,OPEN_DEPTH,
  1249.                                                 MUIA_Bodychunk_Masking,OPEN_MASKING,
  1250.                                                 MUIA_Bitmap_Width,OPEN_WIDTH,
  1251.                                                 MUIA_Bitmap_Height,OPEN_HEIGHT,
  1252.                                                 MUIA_Bitmap_SourceColors,Open_colors,
  1253.                                                 MUIA_Bitmap_Transparent,0,
  1254.                                                 MUIA_FixWidth,OPEN_WIDTH,
  1255.                                                 MUIA_FixHeight,OPEN_HEIGHT,
  1256.                                                 End,                
  1257.                                             Child,HSpace(0),
  1258.                                             End,
  1259.                                         Child,TButtonOpen=TextObject,MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,GetamosaicString(MSG_BUTTON_OPEN),MUIA_Font,MUIV_Font_Tiny,End,
  1260.                                         End,        
  1261.                                     Child,BT_Amiga=VGroup,
  1262.                                         MUIA_ShortHelp,"This button takes you\nto the Amiga home page",
  1263.                                         ButtonFrame,
  1264. //                                        MUIA_HorizDisappear,2,
  1265.                                         MUIA_Background,MUII_ButtonBack,             
  1266.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  1267.                                         MUIA_Group_Spacing,0,         
  1268.                                         Child,IButtonAmiga=HGroup,
  1269.                                             MUIA_Group_Spacing,0, 
  1270.                                             Child,HSpace(0),             
  1271.                                             Child,BodychunkObject,
  1272.                                                 MUIA_Bodychunk_Body,Amiga_body,
  1273.                                                 MUIA_Bodychunk_Compression,AMIGA_COMPRESSION,
  1274.                                                 MUIA_Bodychunk_Depth,AMIGA_DEPTH,
  1275.                                                 MUIA_Bodychunk_Masking,AMIGA_MASKING,
  1276.                                                 MUIA_Bitmap_Width,AMIGA_WIDTH,
  1277.                                                 MUIA_Bitmap_Height,AMIGA_HEIGHT,
  1278.                                                 MUIA_Bitmap_SourceColors,Amiga_colors,
  1279.                                                 MUIA_Bitmap_Transparent,0,
  1280.                                                 MUIA_FixWidth,AMIGA_WIDTH,
  1281.                                                 MUIA_FixHeight,AMIGA_HEIGHT,
  1282.                                                 End,                
  1283.                                             Child,HSpace(0),
  1284.                                             End,
  1285.                                         Child,TButtonAmiga=TextObject,MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,"Amiga H.",MUIA_Font,MUIV_Font_Tiny,End,
  1286.                                         End,        
  1287.  
  1288.                                     Child,BT_AMosaic=VGroup,
  1289.                                         MUIA_ShortHelp,"This button takes you\nto the AMosaic home page",
  1290.                                         ButtonFrame,
  1291. //                                        MUIA_HorizDisappear,1,
  1292.                                         MUIA_Background,MUII_ButtonBack,
  1293.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  1294.                                         MUIA_Group_Spacing,0,         
  1295.                                         Child,IButtonAMosaic=HGroup,
  1296.                                             MUIA_Group_Spacing,0, 
  1297.                                             Child,HSpace(0),             
  1298.                                             Child,BodychunkObject,
  1299.                                                 MUIA_Bodychunk_Body,AMosaic_body,
  1300.                                                 MUIA_Bodychunk_Compression,AMOSAIC_COMPRESSION,
  1301.                                                 MUIA_Bodychunk_Depth,AMOSAIC_DEPTH,
  1302.                                                 MUIA_Bodychunk_Masking,AMOSAIC_MASKING,
  1303.                                                 MUIA_Bitmap_Width,AMOSAIC_WIDTH,
  1304.                                                 MUIA_Bitmap_Height,AMOSAIC_HEIGHT,
  1305.                                                 MUIA_Bitmap_SourceColors,AMosaic_colors,
  1306.                                                 MUIA_Bitmap_Transparent,0,
  1307.                                                 MUIA_FixWidth,AMOSAIC_WIDTH,
  1308.                                                 MUIA_FixHeight,AMOSAIC_HEIGHT,
  1309.                                                 End,                
  1310.                                             Child,HSpace(0),
  1311.                                             End,
  1312.                                         Child,TButtonAMosaic=TextObject,MUIA_Text_PreParse,"\033c",MUIA_Text_Contents,"AM Home",MUIA_Font,MUIV_Font_Tiny,End,
  1313.                                         End,        
  1314.                                     End,                                             
  1315.                                 Child,HSpace(2000), /* A screen wider that 2000 is very unlikely */
  1316.                                 End,
  1317.                             End,
  1318.                         End,
  1319.                     Child,VGroup,
  1320.                         Child, BT_Interrupt = NewObject(BoingTransferClass, NULL,
  1321.                             MUIA_ShortHelp,"This button interrupts\nthe current transfer",
  1322.                             MUIA_Background,MUII_ButtonBack,
  1323.                             MUIA_Frame, MUIV_Frame_ImageButton,
  1324.                             MUIA_InputMode, MUIV_InputMode_RelVerify,
  1325.                             End,
  1326.                         Child,RectangleObject, MUIA_Weight, 1, End,
  1327.                         End,
  1328.                     End,
  1329.                 Child, ColGroup(2),
  1330.                     MUIA_Group_Spacing,1,
  1331. //                    Child,HVSpace,
  1332.                     Child, HTML_Gad = NewObject(HTMLGadClass, NULL,
  1333.                         TextFrame,
  1334.                         MUIA_FillArea,FALSE, /* I am handling the background */
  1335.                         HTMLA_window, NULL,
  1336.                         HTMLA_font, tf_norm,
  1337.                         HTMLA_italic_font, tf_ital,
  1338.                         HTMLA_bold_font, tf_bold,
  1339.                         HTMLA_fixed_font, tf_fixed,
  1340.                         HTMLA_header1_font, tf_h1,
  1341.                         HTMLA_header2_font, tf_h2,
  1342.                         HTMLA_header3_font, tf_h3,
  1343.                         HTMLA_header4_font, tf_h4,
  1344.                         HTMLA_header5_font, tf_h5,
  1345.                         HTMLA_header6_font, tf_h6,
  1346.                         HTMLA_plain_font, tf_plain,
  1347.                         HTMLA_address_font, tf_address,
  1348.                         HTMLA_listing_font, tf_listing, 
  1349.                         HTMLA_visit_func, visit_func,
  1350.                         HTMLA_image_func, image_func,
  1351.                         TAG_DONE),
  1352.                     Child, SB_Vert = ScrollbarObject, End,
  1353.                     Child, SB_Horiz = ScrollbarObject, MUIA_Group_Horiz, TRUE, End,
  1354.                     Child,HVSpace,
  1355.                     End,
  1356.  
  1357.                 Child, PG_Bottom = PageGroup,
  1358.                     MUIA_Font,MUIV_Font_Tiny,
  1359.                     Child, TX_Dest = TextObject, NoFrame, End,
  1360.                     Child, HGroup,
  1361.                         Child, GG_Progress = GaugeObject, MUIA_Gauge_Horiz, TRUE,
  1362.                                         MUIA_Gauge_Divide, 0, GaugeFrame, End,
  1363.                         Child, TX_Progress = TextObject, NoFrame, MUIA_FixWidthTxt,"00000000", 
  1364.                                         MUIA_Text_Contents, "00000000", End,
  1365.                         End,
  1366.                     Child, SearchIndex=HGroup,
  1367.                         MUIA_ShowMe,FALSE,
  1368.                         Child, BT_Search = SimpleButtonHelp("Search","This button sends the search\nrequest to the remote server"),
  1369.                         Child, STR_Search = StringObject, StringFrame, MUIA_String_MaxLen,
  1370.                                             512, MUIA_Weight, 800, MUIA_ShortHelp,"Here you can enter what you want\nto send to the remote server",End,
  1371.                         End,
  1372.                     End,
  1373.                 End,
  1374.             End,
  1375.         SubWindow, WI_Wait = WindowObject,
  1376.             MUIA_Window_DragBar,FALSE,
  1377.             MUIA_Window_CloseGadget,FALSE,
  1378.             MUIA_Window_LeftEdge,MUIV_Window_LeftEdge_Centered,
  1379.             MUIA_Window_TopEdge,MUIV_Window_TopEdge_Centered,
  1380.             MUIA_Window_DepthGadget,FALSE,
  1381.             WindowContents, TextObject,
  1382.                 NoFrame,
  1383.                 MUIA_Text_Contents,GetamosaicString(MSG_REQ_CONSTRUCTING),
  1384.                 MUIA_Text_SetMax,TRUE,
  1385.                 End,
  1386.             End,
  1387.         SubWindow, WI_ImagesReady = WindowObject,
  1388.             MUIA_Window_ID, MAKE_ID('I','R','D','Y'),
  1389.             MUIA_Window_Title, "AMosaic info.",
  1390.             MUIA_Window_CloseGadget,FALSE,
  1391.             WindowContents, VGroup,
  1392.                 Child,TextObject,
  1393.                     NoFrame,
  1394.                     MUIA_Text_Contents,GetamosaicString(MSG_REQ_FORM_READY),
  1395.                     MUIA_Text_SetMax,TRUE,
  1396.                     End,
  1397.                 Child,HGroup,
  1398.                     Child,HSpace(0),
  1399.                     Child,BT_ShowEm=SimpleButtonHelp(GetamosaicString(MSG_REQ_SHOW_THEM),"Press here to recalculate\nthe current form"),
  1400.                     Child,HSpace(0),
  1401.                     End,
  1402.                 End,
  1403.             End,
  1404.         End;
  1405.  
  1406.     if (!App) fail(App,"Failed to create Application.");
  1407.  
  1408.     {
  1409.         int i,cnt=0;
  1410.         for(i=0;i<10;i++)
  1411.         {
  1412.             if(RexxMacroNames[i])
  1413.             {
  1414.                 APTR Obj,UserData;
  1415.                 char *Label;
  1416.                 if(!cnt)
  1417.                 {
  1418.                     if(Obj=MUI_MakeObject(MUIO_Menuitem,NM_BARLABEL,0,0,NULL))
  1419.                         DoMethod(MN_RexxMenu,MUIM_Family_AddTail,Obj);
  1420.                 }
  1421.                 ShortCuts[i][1] = '\0' ;
  1422.                 switch(RexxMacroNames[i][0])
  1423.                 {
  1424.                     case '~':
  1425.                         Label=NM_BARLABEL;
  1426.                         UserData=(APTR)NULL;
  1427.                         ShortCuts[i][0] = '\0' ;
  1428.                         break;
  1429.                     default:
  1430.                         Label=RexxMacroNames[i];
  1431.                         UserData=(APTR)(i+mo_macro_1);
  1432.                         ShortCuts[i][0]='0'+(i+1)%10;
  1433.                         break;
  1434.                 }
  1435.                 if(Obj=MUI_MakeObject(MUIO_Menuitem,Label, UserData ? ShortCuts[i] : NULL,0,UserData))
  1436.                 {
  1437.                     DoMethod(MN_RexxMenu,MUIM_Family_AddTail,Obj);
  1438.                     cnt++;
  1439.                 }
  1440.             }
  1441.         }
  1442.     }
  1443.  
  1444.     LoadHotlist(); // New 12/6 /* This eats 30 k! Memory leak! */
  1445.  
  1446.     if(Rdata.title_to_window){
  1447. //        set(LB_Title,MUIA_ShowMe,False);
  1448. //        set(TX_Title,MUIA_ShowMe,False);
  1449.  
  1450.         DoMethod(TTopGroup,OM_REMMEMBER,TopGroup);
  1451.         MUI_DisposeObject(TopGroup);
  1452.         TX_Title=0;
  1453.         }
  1454.  
  1455.     DoMethod(WI_Main, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, App, 2,
  1456.         MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
  1457.  
  1458.     DoMethod(BT_Back, MUIM_Notify, MUIA_Pressed, FALSE, App, 2,
  1459.         MUIM_Application_ReturnID,mo_back);
  1460.     DoMethod(BT_Forward, MUIM_Notify, MUIA_Pressed, FALSE, App, 2,
  1461.         MUIM_Application_ReturnID,mo_forward);
  1462.  
  1463.     DoMethod(BT_Home, MUIM_Notify, MUIA_Pressed, FALSE,
  1464.         App, 2, MUIM_Application_ReturnID, mo_home_document);
  1465.  
  1466.     DoMethod(BT_Open, MUIM_Notify, MUIA_Pressed, FALSE,
  1467.         App, 2, MUIM_Application_ReturnID, mo_open_document);
  1468.  
  1469.     DoMethod(BT_Reload, MUIM_Notify, MUIA_Pressed, FALSE,
  1470.         App, 2, MUIM_Application_ReturnID, mo_reload_document);
  1471.  
  1472.     DoMethod(BT_Amiga, MUIM_Notify, MUIA_Pressed, FALSE,
  1473.         App, 2, MUIM_Application_ReturnID, mo_load_amigahome);
  1474.  
  1475.     DoMethod(BT_AMosaic, MUIM_Notify, MUIA_Pressed, FALSE,
  1476.         App, 2, MUIM_Application_ReturnID, mo_load_amosaichome);
  1477.  
  1478.  
  1479.     DoMethod(URLGroupList,MUIM_Notify,MUIA_Listview_DoubleClick,TRUE,URLGroupList,3,MUIM_CallHook,&HotlistGroupSelectHook,MUIV_TriggerValue); // New 6/12 /rs
  1480.     DoMethod(URLList,MUIM_Notify,MUIA_Listview_DoubleClick,TRUE,PopURL,2,MUIM_Popstring_Close,TRUE);
  1481.  
  1482.     DoMethod(URLGroupList,MUIM_Notify,MUIA_List_Active,MUIV_EveryTime,URLGroupList,3,MUIM_CallHook,&HotlistGroupButtonsHook,MUIV_TriggerValue);
  1483.     DoMethod(URLList,MUIM_Notify,MUIA_List_Active,MUIV_EveryTime,URLList,3,MUIM_CallHook,&HotlistButtonsHook,MUIV_TriggerValue);
  1484.  
  1485.     DoMethod(BT_HotlistGroupParent,MUIM_Notify,MUIA_Pressed,FALSE,URLGroupList,2,MUIM_CallHook,&HotlistGroupParentHook);
  1486.     DoMethod(BT_HotlistGroupNew,MUIM_Notify,MUIA_Pressed,FALSE,URLGroupList,2,MUIM_CallHook,&HotlistGroupNewHook);
  1487.     DoMethod(BT_HotlistGroupDelete,MUIM_Notify,MUIA_Pressed,FALSE,URLGroupList,2,MUIM_CallHook,&HotlistGroupDeleteHook);
  1488.     DoMethod(BT_HotlistGroupEdit,MUIM_Notify,MUIA_Pressed,FALSE,URLGroupList,2,MUIM_CallHook,&HotlistGroupEditHook);
  1489.     DoMethod(BT_HotlistGroupSort,MUIM_Notify,MUIA_Pressed,FALSE,URLGroupList,2,MUIM_CallHook,&HotlistGroupSortHook);
  1490.     DoMethod(BT_HotlistGroupUp,MUIM_Notify,MUIA_Pressed,FALSE,URLGroupList,2,MUIM_CallHook,&HotlistGroupUpHook);
  1491.     DoMethod(BT_HotlistGroupDown,MUIM_Notify,MUIA_Pressed,FALSE,URLGroupList,2,MUIM_CallHook,&HotlistGroupDownHook);
  1492.  
  1493.     DoMethod(BT_HotlistNew,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistNewHook);
  1494.     DoMethod(BT_HotlistDelete,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistDeleteHook);
  1495.     DoMethod(BT_HotlistEdit,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistEditHook);
  1496.     DoMethod(BT_HotlistSort,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistSortHook);
  1497.     DoMethod(BT_HotlistUp,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistUpHook);
  1498.     DoMethod(BT_HotlistDown,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistDownHook);
  1499.     DoMethod(BT_HotlistMove,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistMoveHook);
  1500.     DoMethod(BT_AddHotlist,MUIM_Notify,MUIA_Pressed,FALSE,URLList,2,MUIM_CallHook,&HotlistAddHook);
  1501.  
  1502.     set(BT_HotlistDelete,MUIA_Disabled,TRUE);
  1503.     set(BT_HotlistEdit,MUIA_Disabled,TRUE);
  1504.     set(BT_HotlistUp,MUIA_Disabled,TRUE);
  1505.     set(BT_HotlistDown,MUIA_Disabled,TRUE);
  1506.     set(BT_HotlistMove,MUIA_Disabled,TRUE);
  1507.  
  1508.     set(BT_HotlistGroupDelete,MUIA_Disabled,TRUE);
  1509.     set(BT_HotlistGroupEdit,MUIA_Disabled,TRUE);
  1510.     set(BT_HotlistGroupUp,MUIA_Disabled,TRUE);
  1511.     set(BT_HotlistGroupDown,MUIA_Disabled,TRUE);        // ^^^ New 12/6 /rs
  1512.  
  1513.  
  1514.     DoMethod(BT_Interrupt, MUIM_Notify, MUIA_Pressed, FALSE,
  1515.         BT_Interrupt, 2, MUIM_CallHook, &interrupt_hook);
  1516.  
  1517.  
  1518.  
  1519.     set(HTML_Gad,HTMLA_SB_Vert,SB_Vert);
  1520.     set(HTML_Gad,HTMLA_SB_Horiz,SB_Horiz);
  1521.  
  1522.     DoMethod(SB_Vert, MUIM_Notify, MUIA_Prop_First, MUIV_EveryTime,
  1523.         HTML_Gad, 3, MUIM_Set, HTMLA_scroll_y, MUIV_TriggerValue);
  1524.     DoMethod(SB_Horiz, MUIM_Notify, MUIA_Prop_First, MUIV_EveryTime,
  1525.         HTML_Gad, 3, MUIM_Set, HTMLA_scroll_x, MUIV_TriggerValue);
  1526.  
  1527.     DoMethod(TX_URL,MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  1528.         App,2,MUIM_Application_ReturnID,ID_STRINGURL);
  1529.  
  1530.  
  1531.     DoMethod(G_Norm, MUIM_Notify, HTMLA_new_href, MUIV_EveryTime, App, 2,
  1532.         MUIM_Application_ReturnID, ID_GOTOANCHOR);
  1533.     DoMethod(G_Norm, MUIM_Notify, HTMLA_get_href, MUIV_EveryTime, App, 2,
  1534.         MUIM_Application_ReturnID, ID_GETTEXT);
  1535.     DoMethod(G_Norm, MUIM_Notify, HTMLA_image_load, MUIV_EveryTime, App, 2,
  1536.         MUIM_Application_ReturnID, ID_IMAGELOAD);
  1537.     DoMethod(G_Norm, MUIM_Notify, HTMLA_post_text, MUIV_EveryTime, App, 2,
  1538.         MUIM_Application_ReturnID, ID_POSTTEXT);
  1539.  
  1540.     DoMethod(BT_Search, MUIM_Notify, MUIA_Pressed, FALSE, App, 2,
  1541.         MUIM_Application_ReturnID, mo_search_index);
  1542.     DoMethod(STR_Search, MUIM_Notify, MUIA_String_Acknowledge, MUIV_EveryTime,
  1543.         App, 2, MUIM_Application_ReturnID, mo_search_index);
  1544.  
  1545.     DoMethod(BT_ShowEm, MUIM_Notify, MUIA_Pressed, FALSE, App, 2,
  1546.         MUIM_Application_ReturnID, mo_show_form_images);
  1547.  
  1548.     /* Cycle chain, etc */
  1549.  
  1550.     DoMethod(WI_Main, MUIM_Window_SetCycleChain,
  1551.             TX_URL,BT_Back,BT_Forward,BT_Reload,BT_Home,BT_Open,BT_Amiga,BT_AMosaic,NULL);
  1552.  
  1553.     /* Inlined image foo */
  1554.  
  1555.     set(SB_Vert, MUIA_Prop_DeltaFactor, 15); /* arrows jump 15 pixels */
  1556.     set(SB_Horiz, MUIA_Prop_DeltaFactor, 15); /* arrows jump 15 pixels */
  1557.  
  1558.     /* Here we go! */
  1559.  
  1560.     DoMethod(App, MUIM_Application_SetMenuCheck, mo_delay_image_loads, Rdata.delay_image_loads);
  1561.     DoMethod(App, MUIM_Application_SetMenuCheck, mo_isindex_to_form, Rdata.isindex_to_form);
  1562.  
  1563.     DoMethod(App, MUIM_Application_SetMenuCheck, mo_buttons_text,Rdata.image_buttons == 0);
  1564.     DoMethod(App, MUIM_Application_SetMenuCheck, mo_buttons_image,Rdata.image_buttons == 1);
  1565.     DoMethod(App, MUIM_Application_SetMenuCheck, mo_buttons_imagetext,Rdata.image_buttons == 2);
  1566.  
  1567.     SetImageButtons(Rdata.image_buttons);
  1568.     SetSearchIndex(Rdata.image_buttons);
  1569.  
  1570.     set(WI_Main, MUIA_Window_Open, TRUE);
  1571.     get(WI_Main,MUIA_Window_Open,&win_open);
  1572.     if(!win_open){
  1573.         MUI_Request(App,0,0,0,"Ok","Failed to open window.");
  1574.         fail(App,"Unable to open window\n");
  1575.         }
  1576. }
  1577.  
  1578.  
  1579. /*------------------------------------------------------------------------
  1580.   MUI macros.
  1581. ------------------------------------------------------------------------*/
  1582.  
  1583. #define REG(x) register __ ## x
  1584. #define ASM       __asm
  1585. #define SAVEDS __saveds
  1586.  
  1587. /*************************/
  1588. /* Init & Fail Functions */
  1589. /*************************/
  1590.  
  1591. VOID fail(APTR app,char *str)
  1592. {
  1593.     if (app)
  1594.         MUI_DisposeObject(app);
  1595.  
  1596.     if (MUIMasterBase){
  1597.         CloseLibrary(MUIMasterBase);
  1598.         MUIMasterBase = NULL;
  1599.         }
  1600.  
  1601.     if (DataTypesBase){
  1602.         CloseLibrary (DataTypesBase);
  1603.         DataTypesBase = NULL;
  1604.         }
  1605.  
  1606.     if (str){
  1607.         puts(str);
  1608.         exit(20);
  1609.         }
  1610.     
  1611.     exit(0);
  1612. }
  1613.  
  1614. //int CXBRK(void) { return(0); }
  1615. //int _CXBRK(void) { return(0); }
  1616. //void chkabort(void) {}
  1617.  
  1618. extern int lib_version;
  1619.  
  1620. VOID init(VOID)
  1621. {
  1622.     if (!(MUIMasterBase = OpenLibrary(MUIMASTER_NAME,8)))
  1623.         fail(NULL,"Failed to open "MUIMASTER_NAME".");
  1624.  
  1625.     if (lib_version >= 39) {
  1626.         if (!(DataTypesBase = OpenLibrary("datatypes.library", 0L)))
  1627.             fail(NULL,"Failed to open Datatypes.library");
  1628.     }
  1629. }
  1630.  
  1631. void SetImageButtons(long state)
  1632. {
  1633.     long s;
  1634.     long win_open;
  1635.     s=state;
  1636.  
  1637.     get(WI_Main,MUIA_Window_Open,&win_open);
  1638.  
  1639.     if(win_open){
  1640.         if(mui_version>10)
  1641.             DoMethod(ButtonGroup,MUIM_Group_InitChange);
  1642.         else
  1643.             set(WI_Main,MUIA_Window_Open,FALSE);
  1644.         }
  1645.  
  1646.     set(IButtonBack,MUIA_ShowMe,s);
  1647.     set(IButtonForward,MUIA_ShowMe,s);
  1648.     set(IButtonReload,MUIA_ShowMe,s);
  1649.     set(IButtonHome,MUIA_ShowMe,s);
  1650.     set(IButtonOpen,MUIA_ShowMe,s);
  1651.     set(IButtonAmiga,MUIA_ShowMe,s);
  1652.     set(IButtonAMosaic,MUIA_ShowMe,s);
  1653.  
  1654.     s= (!state || (state==2));
  1655.     set(TButtonBack,MUIA_ShowMe,s);
  1656.     set(TButtonForward,MUIA_ShowMe,s);
  1657.     set(TButtonReload,MUIA_ShowMe,s);
  1658.     set(TButtonHome,MUIA_ShowMe,s);
  1659.     set(TButtonOpen,MUIA_ShowMe,s);
  1660.     set(TButtonAmiga,MUIA_ShowMe,s);
  1661.     set(TButtonAMosaic,MUIA_ShowMe,s);
  1662.  
  1663.     if(win_open){
  1664.         if(mui_version>10)
  1665.             DoMethod(ButtonGroup,MUIM_Group_ExitChange);
  1666.         else
  1667.             set(WI_Main,MUIA_Window_Open,TRUE);
  1668.         }
  1669. }
  1670.  
  1671. void SetSearchIndex(long state)
  1672. {
  1673.     set(SearchIndex,MUIA_ShowMe,state);
  1674. }
  1675.  
  1676. LONG __stack = 32768;  /* Make it big for egs users */
  1677.